package gang.org.springframework.framework.factory;

import gang.org.springframework.framework.beanpostprocessor.GangBeanPostProcessor;

public interface GangConfigurableBeanFactory extends GangHierarchicalBeanFactory, GangSingletonBeanRegistry {

    String SCOPE_SINGLETON = "singleton";

    String SCOPE_PROTOTYPE = "prototype";

    /**
     * 业务意义：获取类加载器
     * @return 类加载器
     * */
    ClassLoader getBeanClassLoader();

    /**
     * 业务意义：判断BeanDefinition是否为一个FactoryBean
     * @param name Bean的名称
     * @return boolean 值
     * */
    boolean isFactoryBean(String name);

    /**
     * 业务意义：是否将BeanDefinition进行缓存
     * @return boolean 值
     * */
    boolean isCacheBeanMetadata();

    void registerDependentBean(String beanName, String dependentBeanName);

    void addBeanPostProcessor(GangBeanPostProcessor beanPostProcessor);
}
